package crear.pdf.my.recibo;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Writer;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfWriter;



public class App {

	/**
	 * @param args
	 */
	public static final String RESULT = "/Users/SonofGod/Desktop/Hello.pdf";
	
	public static void main(String[] args) throws DocumentException, IOException {
		new App().crearPDF(RESULT);
	}

	private void crearPDF(String filename)throws DocumentException, IOException {
		
		//Paso 1 Para espécificar las características del documento
		Document doc= new Document();
		doc.setPageSize(PageSize.LETTER);
		// izq,der,arriba,abajo
		doc.setMargins(50, 50, 50, 50);
		//Para margenes con mirror horizontalmente entre cada página
		//doc.setMarginMirroring(true);
		//Para margenes con mirror vertical entre cada página
		//doc.setMarginMirroringTopBottom(true);

		//paso 2
		PdfWriter writer=PdfWriter.getInstance(doc, new FileOutputStream(filename));
		//Para crear el archivo en versión 1.7 de pdf
		//writer.setPdfVersion(PdfWriter.PDF_VERSION_1_7);
		//=========================================================================================================================
		//Para crear el archivo sólo en memoria
//		ByteArrayOutputStream docEnMemoria =  new ByteArrayOutputStream();
//		PdfWriter.getInstance(doc,docEnMemoria);
		//=========================================================================================================================
		
		//pase 3
		doc.open();
		//pase 4 Escribir el documento
//		Paragraph parr1 = new Paragraph();
//		parr1.setAlignment(Element.ALIGN_RIGHT);
//		parr1.add("REQUISICIÓN MÓVIL                                        PROQUIFA");
//		doc.add(parr1);
		//escribir texto directamente
		PdfContentByte canvas = writer.getDirectContentUnder();
		writer.setCompressionLevel(0);
		canvas.saveState();
		canvas.beginText();
		//32 es x y 650 es y, empezando de la esquina inferior isquierda
		canvas.moveText(36, 650);
		canvas.setFontAndSize(BaseFont.createFont(), 12);
		canvas.showText("Hellow world");
		canvas.endText();
		canvas.restoreState();
		canvas.saveState();
		canvas.beginText();
		canvas.moveText(150, 600);
		canvas.setFontAndSize(BaseFont.createFont(), 18);
		canvas.showText("Hellow world");
		canvas.endText();
		canvas.restoreState();
		
		//pase 5
		doc.close();
		
		//Para escribir el archivo que está en memoría a un archivo
//		FileOutputStream ar = new FileOutputStream(RESULT);
//		ar.write(docEnMemoria.toByteArray());
//		ar.close();
		//=========================================================================================================================
	}

}
